package com.lagou.service.impI;

import com.lagou.dao.AccountDao;
import com.lagou.domain.Account;
import com.lagou.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
import java.util.List;

/**
 * @Author wsl
 * @Date 2021/11/9 6:36
 * @Project_Name jdbc_spring
 */
@Service("accountService") //相当于配置了bean标签 id属性
@Scope("singleton")
public class AccountServiceImpI implements AccountService {

    /*@Autowired//使用在字段上用于根据类型依赖注入
    @Qualifier("accountDao")//结合@Autowired一起使用,根据名称进行依赖注入（一个接口对应两个或多个实现类时）*/
    @Resource(name = "accountDao") //相当于@Autowired+@Qualifier，按照名称进行注入
    private AccountDao accountDao;

    //set方法完成AccountDao的依赖注入,   使用注解代替set方法完成依赖注入
    /*public void setAccountDao(AccountDao accountDao) {
        this.accountDao = accountDao;
    }*/

    //@Value：进行字符串的注入
    @Value("注入普通数据")
    private String str;
    @Value("${jdbc.driverClassName}")
    private String driver;

    @PostConstruct //初始化注解
    public void init(){
        System.out.println("初始化方法...");
    }

    @PreDestroy //销毁注解
    public void destroy(){
        System.out.println("销毁方法...");
    }


    //1.查询所有
    public List<Account> findAll() {

        System.out.println(str);//注入普通数据
        System.out.println(driver);//com.mysql.jdbc.Driver

        return accountDao.findAll();
    }

    //2.根据id查询
    public Account findById(Integer id) {

        return accountDao.findById(id);
    }

    //3.新增操作
    public void save(Account account) {

        accountDao.save(account);

    }

    //4.修改操作
    public void update(Account account) {

        accountDao.update(account);

    }

    //5.删除操作
    public void delete(Integer id) {

        accountDao.delete(id);

    }

}
